 sinkeynes.cpp : Defines the entry point for the console application.
//
/*
simula la costruzione di una città 
la città è definita da una matrice
ogni luogo è caratterizzato da una valore , un tipo di terreno e da un numero di occupanti il giocatore ha un buget iniziale, 
il gioco si avvia crea una città base inizzializzando a caso il 50% dei suoi luoghi 
il giocatore può acquistare un nuovo territorio, visualizzare la mappa della città e dei suoi terreni premendo un tasto può passare al turno
successivo che comprende il pagamento delle tasse (dipendente dalla proprierà e gli incassi guadagnat iin base agli abitanti delle sue prorpietà

*/

#include "stdafx.h"
#include <iostream>
#include <time.h>
#define NR 20
#define NC 10
using namespace std;
typedef struct {
	float val = 0;
	char tipo = 0;
	int occupanti = 0;
	bool libero=true;
}LUOGO;
void carica(LUOGO matr[NR][NC],float *credito);
void inizio();
int inizializzazione(LUOGO matr[NR][NC]);
void visualizza(LUOGO matr[NR][NC]);
void tasse(LUOGO matr[NR][NC], float *credito);
int main()
{
	LUOGO matr[NR][NC];
	inizio();
	system("pause");
    return 0;
}
void inizio() {

	int scelta = 0;
	LUOGO matr[NR][NC];
	LUOGO matr1[NR][NC];
	printf("benvenuti in slimcamp!!!!!\n");
	printf(" potete decire se iniziare una nuova partita o continuare quella esistente\n");
	printf("0.uscire dal game\n");
	printf("1.iniziare una nuova partita\n");
	printf("2.continuare la partita gia iniziaa in precedenza\n");
	scanf_s("%d", &scelta, sizeof(int));
	switch (scelta) {
	case 0:
		printf("arrivederci e lasciate la mancia\n");
		system("pause");
		break;
	case 1:
		inizializzazione(matr1);
		if (inizializzazione(matr1) == 0) {
			printf("arrivederci");
			break;
		}
		break;
	//case 2://non so se va fatto
		//break;
	default:
		printf("numero non valido\n");

	}


}
int inizializzazione(LUOGO matr[NR][NC]) {
	int turno = 0;
	int x = 0;
	int y = 0;
	float credito;
	int scelta=0;
	credito = 60.0;
	
	do{
		printf("ciao, ora hai un credito di %f e puoi acquistare solo fattorie\n", credito);
		visualizza(matr);
		printf("\n");
		printf("1.un casa occupa 4 posti, e ha un costo di 20§, occupa 4 persone, guadagnio totale 15§\n");
		printf("inserire le cordiante  x,y \n");
		printf("x:\n");
		scanf_s("%d", &x, sizeof(int));
		printf("y:\n");
		scanf_s("%d", &y, sizeof(int));
		if (credito == 20) {
			matr[x][y].tipo = '▲';
			matr[x + 1][y].tipo = '▲';
			matr[x][y - 1].tipo = '▲';
			matr[x + 1][y - 1].tipo = '▲';

			matr[x][y].val = 5;
			matr[x + 1][y].val = 5;
			matr[x][y - 1].val = 5;
			matr[x + 1][y - 1].val = 5;

			matr[x][y].occupanti = 1;
			matr[x + 1][y].occupanti = 1;
			matr[x][y - 1].occupanti = 1;
			matr[x + 1][y - 1].occupanti = 1;

			matr[x][y].libero = false;
			matr[x + 1][y].libero = false;
			matr[x][y - 1].libero = false;
			matr[x + 1][y - 1].libero = false;
			credito -= 20;
		}
	} while ((turno!=0)||(credito != 20));
	turno++;//turno
	bool risposta = false;
	int r = 0;
	do {
		printf("se vuoi continuare il gioco premi 1");
		printf("se vuoi uscire dal   gioco premi 2");
		scanf_s("%d", &r, sizeof(int));
		if (r == 1) {
			tasse(matr, &credito);
			printf("%f", credito);
			system("cls");
			printf("se vuoi inserire edifici premi 1\n");
			printf("se vuoi andare avanti senza inserire niente premi 0\n");
			scanf_s("%d", &scelta, sizeof(int));
			switch (scelta) {
			case 0:
				turno++;
				break;
			case 1:
				carica(matr, &credito);
				break;
			default:
				printf("valore non valido");
			}
			risposta = false;
		}
		if (r == 2) {
			risposta = true;
		}
	} while (risposta != false);
	
	int o = 0;
	printf("vuoi uscire dal gioco?,\n se si premi 1 se no premi 3\n");
	scanf_s("%d", &o, sizeof(int));
	if (o == 1) {
		return 0;
	}



}
void visualizza(LUOGO matr[NR][NC]){
	for (int i = 0; i < NR; i++) {
		for (int j = 0; j < NC; j++) {
			printf("%c", matr[i][j].tipo);
		}
	}
}
void tasse(LUOGO matr[NR][NC], float *credito) {
	for (int x = 0; x < NR; x++) {
		for (int y = 0; y < NC; y++) {
			if ((matr[x][y].tipo == '▲') && (matr[x + 1][y].tipo == '▲') && (matr[x][y - 1].tipo == '▲') && (matr[x + 1][y - 1].tipo == '▲')) {
				credito = credito + 15;
			}
			if ((matr[x][y].tipo == '▄') && (matr[x + 1][y].tipo == '▄') && (matr[x + 2][y].tipo == '▄') && (matr[x][y - 1].tipo == '▄') && (matr[x + 1][y - 1].tipo == '▄') && (matr[x + 2][y - 1].tipo == '▄')) {
				credito = credito + 25;
			}
			if ((matr[x][y].tipo == '█') && (matr[x + 1][y].tipo == '█') && (matr[x + 2][y].tipo == '█') && (matr[x][y - 1].tipo == '█') && (matr[x][y - 2].tipo == '█') && (matr[x + 1][y - 1].tipo == '█') && (matr[x + 2][y - 1].tipo == '█') && (matr[x + 1][y - 2].tipo == '█') && (matr[x + 2][y - 2].tipo == '█')) {
				credito = credito + 35;
			}
		}
	}
}
void carica(LUOGO matr[NR][NC],float *credito) {
	int x = 0;
	int y = 0;
	// valore tipo ok 
	// § combinazione alt+245
	int scelta = 0;
	bool trovato = false;
	printf("1.un casa occupa 4 posti, e ha un costo di 20§, occupa 4 persone, guadagnio totale 15§\n");
	printf("2.una industria occupa 6 posti costo 30§, occupa 15 persone con un guadagno di 25§\n");
	printf("3.una fattoria occupa 9 posti  costo  45§,occupa 20 persone con un guadagno di 35§\n");
	printf("inserire il tipo di edificio\n");
	scanf_s("%d", &scelta, sizeof(int));	// tipo di edificio
	do {
		printf(" tenedo a mente quello detto qui sopra\n inserire le cordinate del terreno\n");
		printf("x\n");
		scanf_s("%d", &x, sizeof(int));
		printf("y\n");
		scanf_s("%d", &y, sizeof(int));
		if (matr[x][y].libero == true) {
			trovato = true;
		}
	} while (trovato !=true);

	if (scelta == 1) {
		if (*credito >= 20) {
			matr[x][y].tipo = '▲';
			matr[x + 1][y].tipo = '▲';
			matr[x][y - 1].tipo = '▲';
			matr[x + 1][y - 1].tipo = '▲';

			matr[x][y].val = 5;
			matr[x + 1][y].val = 5;
			matr[x][y - 1].val = 5;
			matr[x + 1][y - 1].val = 5;

			matr[x][y].occupanti = 1;
			matr[x + 1][y].occupanti = 1;
			matr[x][y - 1].occupanti = 1;
			matr[x + 1][y - 1].occupanti = 1;

			matr[x][y].libero = false;
			matr[x + 1][y].libero = false;
			matr[x][y - 1].libero = false;
			matr[x + 1][y - 1].libero = false;
			*credito -= 20;
		}
		else
			printf("credito insufficente\n");
	}
	if (scelta == 2) {
		if (*credito >= 30) {
			// tipo
			matr[x][y].tipo = '▄';
			matr[x + 1][y].tipo = '▄';
			matr[x + 2][y].tipo = '▄';
			matr[x][y - 1].tipo = '▄';
			matr[x + 1][y - 1].tipo = '▄';
			matr[x + 2][y - 1].tipo = '▄';
			//val
			matr[x][y].val = 5;
			matr[x + 1][y].val = 5;
			matr[x + 2][y].val = 5;
			matr[x][y - 1].val = 5;
			matr[x + 1][y - 1].val = 5;
			matr[x + 2][y - 1].val = 5;
			// occupanti

			matr[x][y].occupanti = 2;
			matr[x + 1][y].occupanti = 3;
			matr[x + 2][y].occupanti = 3;
			matr[x][y - 1].occupanti = 2;
			matr[x + 1][y - 1].occupanti = 3;
			matr[x + 2][y - 1].occupanti = 2;
			// occupato

			matr[x][y].libero = false;
			matr[x + 1][y].libero = false;
			matr[x + 2][y].libero = false;
			matr[x][y - 1].libero = false;
			matr[x + 1][y - 1].libero = false;
			matr[x + 2][y - 1].libero = false;
			*credito -= 30;
		}
		printf("credito insufficente\n");
	}
	if (scelta == 3) {
		if (*credito >= 45) {
			//tipo
			matr[x][y].tipo = '█';
			matr[x + 1][y].tipo = '█';
			matr[x + 2][y].tipo = '█';    //prima riga
			matr[x][y - 1].tipo = '█';
			matr[x][y - 2].tipo = '█';
			matr[x + 1][y - 1].tipo = '█';
			matr[x + 2][y - 1].tipo = '█';
			matr[x + 1][y - 2].tipo = '█';
			matr[x + 2][y - 2].tipo = '█';
				 //valore
			matr[x][y].val = 5;
			matr[x + 1][y].val = 5;
			matr[x + 2][y].val = 5;    
			matr[x][y - 1].val = 5;
			matr[x][y - 2].val = 5;
			matr[x + 1][y - 1].val = 5;
			matr[x + 2][y - 1].val = 5;
			matr[x + 1][y - 2].val = 5;
			matr[x + 2][y - 2].val = 5;
			// occupanti

			matr[x][y].occupanti = 2;
			matr[x + 1][y].occupanti = 2;
			matr[x + 2][y].occupanti = 2;
			matr[x][y - 1].occupanti = 3;
			matr[x][y - 2].occupanti = 2;
			matr[x + 1][y - 1].occupanti = 2;
			matr[x + 2][y - 1].occupanti = 3;
			matr[x + 1][y - 2].occupanti = 2;
			matr[x + 2][y - 2].occupanti = 2;

			matr[x][y].libero = false;
			matr[x + 1][y].libero = false;
			matr[x + 2][y].libero = false;//prima riga
			matr[x][y - 1].libero = false;
			matr[x][y - 2].libero = false;
			matr[x + 1][y - 1].libero = false;
			matr[x + 2][y - 1].libero = false;
			matr[x + 1][y - 2].libero = false;
			matr[x + 2][y - 2].libero = false;
			*credito -= 45;
		}
		printf("credito insufficente \n");

	}

}

